Проектная работа "A/B-тестирование"

Выполнил: Киселев Дмитрий

Задача:

Провести оценку результатов A/B-теста. Имеется датасет с действиями пользователей, техническое задание и несколько вспомогательных датасетов.

Техническое задание

Описание данных

ab_project_marketing_events.csv — календарь маркетинговых событий на 2020 год.

final_ab_new_users.csv — пользователи, зарегистрировавшиеся с 7 по 21 декабря 2020 года.

final_ab_events.csv — действия новых пользователей в период с 7 декабря 2020 по 4 января 2021 года.

final_ab_participants.csv — таблица участников тестов.

Оглавление

  1. Открытие, изучение данных
  2. Предобработка, форматирование, удаление дубликатов и аномалий
  3. Категоризация
  4. Анализ данных, подготовка выборки
  5. Проверка гипотез и выводы

Открытие файла с данными и изучение общей информации

Предобработка и выявление закономерностей

Нас интресует поведение пользователей, набранным из EU в период с 7 по 21 декабря 2020 года на логах 7 декабря - 14 января 2021. Заметим, что данный период совпадает с маркетинговыми кампаниями из списка: есть пересечение с активностью Christmas&NY Promo с 25 декабря по по 3 января. Изучим, как это влияет на параметры тестирования и саму возможность его корректного проведения. Также если отмерять 2 недели с прошлой активности - то Black Friday мероприятия могут иметь эффект на аудиторию, хотя сама активность и не такая продолжительная.

Пропущенных дней нет, паттерны для всех устройств одинаковые: число регистраций увеличивается к выходным и достигает локальных пиков по воскресеньям. Кстати данных о регистрациях оказалось на пару дней больше - нас интересует только период до 21 дек. включительно. Будет полезно сразу отфильтровать датасет для дальнейшей работы - нам также нужна аудитория именно из EU.

Неожиданно в файле с тестами содержатся пользователи из другого неизвестного эксперимента с названием interface_eu_test. Придется проверить пересечение аудиторий, так как нам не нужны пользователи, которые подверглись двойному эксперименту. От этого логика построения вывода об эффективности конкретной доработки recommender_system_test рушится.

Итак, внутри одного теста группы не пересекаются, это правильно. Но аудитория интересующего нас теста recommender_system_test имееет критичное для выводов пересечение с другой экспериментальной группой B теста interface_eu_test, отфильтруем датасет. Далее проверим распределение участников теста по дате регистрации пользователей из EU.

До исключения из списка пользователей экспериментальной группы B конкурирующего теста всего было 6701 уникальных участников, это ~15,8% от числа всех пользователей зарегистрированных за период 7-21 дек из EU (42340 уникальных). После очистки число участников сокращено до 5918, ~14% целевой аудитории.

Графики совпадают с общим распределением, это хороший признак качественного отбора. До обращения к логам общий размер выборки по двум группам составляет 5568 уникальных пользователя, что пока все еще несущественно ниже ожидаемой аудитории по ТЗ. Также 5568 меньше чем изначальное число отобранных участников - так как в датасете с участниками не указано откуда взят пользователь, будем в дальнейшем считать (опираясь на данные регистрации) что он либо не из EU, либо был зарегистрирован не в период 7-21 дек.

Также учтем, что всего 42340 пользователя зарегистрировались из EU, тогда доля реальных участников тестирования составит 13%, плюс они распределены одинаково по каждой неделе.

В ходе предобработки были выявлены отклонения от ожиданий ТЗ по аудитории и риск воздействия на тестируемых пользователей новогодней промо-активностью. Часть пользователей пришлось исключить из-за попадания в экспериментальную группу B другого теста, а часть из списка оказались пользователями которые зарегистрированы либо не в EU, либо после 21 декабря. Финальная аудитория составила 13,15% от числа всех пользователей, набранным из EU или 5568.

Анализ и формирование выборок для тестирования гипотез

Снова видим пропущенных пользователей, нам подойдут не все логи - причина та же (либо пользователь не из EU, либо был зарегистрирован не в период 7-21 дек), т к мы забрали данные из регистраций датасета eu_new_users, сразу избавимся от лишних записей ориентируясь на столбец 'first_date'.

Похоже, что воронка в событиях формируется в очередности: login, product_page, product_cart, purchase, при этом купить товар можно без предпоследнего шага. И в среднем пользователи действуют быстрее чем ожидания в ТЗ (4 дня в среднем для любого события).

Теперь изучим характеристики выборок по группам.

Видим что события в логах распределены неравномерно, ближе к концу периода сокращаются и пользователи и события (частично это связано с фильтрацией и распределением времени совершения действия). В целом в группе B оказывается меньше пользователей, и как мы выяснили, они совершают чуть меньше действий. Отбросим период когда начинается промо (25 дек) и финально изучим количество пользователей и воронки по группам.

Конверсия группы B c измененными рекомендациями стала хуже, ни одна метрика не улучшилась. Проведем несколько z-тестов на равенство пропорций двух выборок, чтобы определить статистическую значимость выводов.

Анализ и формирование выборок для тестирования гипотез

Для проверки гипотез мы используем три сравнения пропорции событий к общему событию 'login', это небольшое число, но оно все равно приводит к увеличению вероятности проявления ошибки 1-ого и 2-ого рода при проведении статистических z-тестов.

Мы можем заведомо повлиять на снижение вероятности ошибок через использование методов корректировки уровня доверительного интервала. Например может подойти поправка Холма, т к она вместе с тем позволит сохранить мощность теста (beta=1-alpha) на более высоком уровне за счет последовательного смягчения корректировок alpha.

Примем alpha = 0.05, тогда для первой гипотезы доверительный интервал составит 0.05/3 ~ или 1,67%, а для третьей 5%. Напишем функцию которая бы последовательно корректировала интервал и принимала начальный уровень alpha.

Нулевая гипотеза для каждого теста будет значить равенство пропорций по заданным переменным success_event/trial_event для генеральных совокупностей. Альтернативная гипотеза - пропорции success_event/trial_event не равны.

Получились интересные результаты:

Получается, что новая рекомендательная система сильно снижает конверсию в просмотр карточек, скорее всего ухудшает и просмотр корзины, но при этом не имеет воздействия на пропорцию покупок. Т е улучшить все показатели на 10% как это ожидалось не удалось, показатели наоборот упали, при этом конверсия в покупки осталась прежней.

Вывод

В ходе исследования были изучены логи событий по действиям пользователей из EU c 7 по 25 декабря. Оказалось что в изначально запланированном периоде анализа имеется пересечение с маркетиноговой активностью под новый год, в конечную выборку попали усеченные данные. В проверке гипотез было избрано 5568 уникальных пользователя, равномерно распределенными по дням в обеих группах, это ниже ожидаемого числа. Но конфигурация теста (начальные уровни конверсии, ожидаемое изменение на 10%) и распределение регистрации пользователей по дням позволяет считать что это достаточный % от нужной нам аудитории (13.5% генеральной совокупности).

В процессе изучения частоты свершения событий была установлена воронка продаж - от логина к переходу на страницу с предложениями (конверсия 63% пользователей), открытию карточки продукта (31%) и покупки (29%). Самое большое количество пользователей теряется именно после события логина в обоих группах - повод направлено поработать над улучшением этой конверсии.

В итоговых выборках по групам не отмечено аномалий в распределении уникальных пользователей/частоты событий. Сходу замечено ухудшение конверсии. Используя поправку доверительного интервала чтобы избежать ошибок и не потерять мощности теста, удалось получить статистически значимые выводы. Низкие p-value для конверсии на просмотр продукта и корзины позволяет говорить о наличии статистически значимых различиях в пропорциях выборки. Эти метрики ухудшились на 9 и 4% соответственно. При этом конверсия в покупки осталась прежней.

Приходим к выводу, что новая рекомендательная система ухудшила конверсию пользователя, и не задела результативность покупок. При лучшем понимании механики приложения(сайта) и UX пользователя можно улучшить захват на страницу предложений продуктов, сохранив такие же высокие конверсии в покупку с просмотра карточек.